Some Newton ROMS have code in them that causes a soup corruption when deleting records. It's fixed in NOS 2.0. If you get a -10606 error, then the database indexes have been corrupted. There is no easy way to prevent this except to not delete an entry. Apple suggests moving all entries to a new soup and then renaming or deleting the old soup. I've written an application to do this. But, it's untested as I can't seem to reproduce the problem on my Newton. Soon, I'll write an app to do massive soup entry manipulations to cause this problem so I can test my fix-it app.
Note: If you have the latest O/S System update, the corruption won't happen. Be sure to get the 12/95 Apple update for MP100, MP110 and MP120 /1.3 Newton's.
This app should be harmless to normal soups, so don't worry if you 'fix' a good soup - but try not to. The only qualification is to have enough memory when it makes a new soup as the indexes can take up a lot of space. You should try to have at least 20% free memory all the time and more when running this app. As always, make a backup first if possible.
The app works by moving records to a new, temp. soup (TempDb) and them renaming the old soup to BadSoupXX and the temp. soup to the NewtDb corrupted one. Then tries to delete the BadSoupXX soup.
This app should work, but who knows if the information I got about this error had goodness ;-)
If, during the execution of the app, you get a Newton Error, stop as something is wrong. You might want to Reset before running it to have the most heap space.
First select the Db # and where it is: Internal / card.
Press the Check Db button - if there is not a Db defined, it will tell you.
It will then read all records and display a count & # it couldn't read - bad ones.
Press the Check & Fix Db button.
If you had not first done a Check, it will do so.
Next it will read and move each record to a temp. soup.
Then it will display the stats:
Total entries xxxx - how many records
Bad entries xxxx - records that had problems and will be moved to the new soup.
Very bad entries xxxx - records that had big problems and could not be moved to the new soup.
Then some soup index removing and renaming takes place.
If you don't get a "removing Indexes - OK" , that's OK, the old soup might take up some space.
If you don't get a "renaming old soup - OK' or "renaming new soup to Db - OK" then the old db soup is unusable as it couldn't be renamed and the new one could not take it's place :-( You'll have to manually delete this soup and recreate the records for the Db.
You next should get a "deleting old soup - OK". if not, and the Renames (above) are OK, then no matter. The old, bad soup was renamed to "BadSoup xx" and then could not be deleted because of it's problems. It should not take much space but , eventually, the card where it resides should be erased to release it's space.